package com.whfc.ms.api.fse.service;

import com.whfc.common.result.ListData;
import com.whfc.common.result.PageData;
import com.whfc.fse.dto.FseCrawlerDTO;
import com.whfc.fse.dto.FseCrawlerDataDTO;
import com.whfc.fse.dto.FseCrawlerDataLogDTO;
import com.whfc.fse.dto.FseFvsDeviceDTO;
import com.whfc.fse.param.FseCrawlerAddParam;
import com.whfc.fse.param.FseCrawlerBindParam;
import com.whfc.fse.param.FseCrawlerEditParam;
import com.whfc.fse.param.FseFvsParam;

import java.util.Date;
import java.util.List;

/**
 * @author qzexing
 * @version 1.0
 * @date 2021/10/30 17:01
 */
public interface MsFseCrawlerService {

    /**
     * 获取履带吊列表
     *
     * @param pageNum  页码
     * @param pageSize 每页数量
     * @param deptId   组织架构ID
     * @param keyword  搜索关键字
     * @param bindFlag 绑定状态
     * @param netState 网络状态
     * @return 履带吊列表
     */
    PageData<FseCrawlerDTO> list(Integer pageNum, Integer pageSize, Integer deptId, String keyword, Integer bindFlag, Integer netState);

    /**
     * 获取履带吊列表
     *
     * @param deptId   组织架构ID
     * @param bindFlag 绑定状态
     * @param netState 网络状态
     * @return 履带吊列表
     */
    ListData<FseCrawlerDTO> list(Integer deptId, Integer bindFlag, Integer netState);

    /**
     * 获取履带吊详情
     *
     * @param crawlerId 履带吊ID
     * @return 履带吊详情
     */
    FseCrawlerDTO detail(Integer crawlerId);

    /**
     * 添加履带吊
     *
     * @param request 参数
     */
    void add(FseCrawlerAddParam request);

    /**
     * 修改履带吊
     *
     * @param request 参数
     */
    void edit(FseCrawlerEditParam request);

    /**
     * 删除履带吊
     *
     * @param crawlerId 履带吊ID
     */
    void del(Integer crawlerId);

    /**
     * 绑定
     *
     * @param request 参数
     */
    void bind(FseCrawlerBindParam request);

    /**
     * 解绑
     *
     * @param request 参数
     */
    void unbind(FseCrawlerBindParam request);

    /**
     * 获取履带吊最新数据
     *
     * @param crawlerId 履带吊ID
     * @return 履带吊最新数据
     */
    FseCrawlerDataDTO getLatest(Integer crawlerId);

    /**
     * 获取履带吊历史数据
     *
     * @param crawlerId 履带吊ID
     * @param date      日期
     * @param field     返回字段
     * @return 履带吊历史数据
     */
    List<FseCrawlerDataLogDTO> getCrawlerLog(Integer crawlerId, Date date, String field);

    /**
     * 塔机绑定监控设备
     *
     * @param request 请求参数
     */
    void bindFvs(FseFvsParam request);

    /**
     * 获取视频监控列表
     *
     * @param crawlerId 履带吊ID
     * @return 视频监控列表
     */
    List<FseFvsDeviceDTO> fvsList(Integer crawlerId);


}
